#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<fcntl.h>
#include<sys/stat.h>
#include<linux/stat.h>
#include<stdlib.h>
#include<string.h>
// #include <sys/ipc.h>
// #include <sys/shm.h>
// #define SHM_SIZE 8

// void sigcatch(int signum){
// 	printf("Catch SIGPIPE signal!!\n");
// 	exit(0);
// }

int main()
{
	char buf[1024];
	char buf1[1024];
	char u1_name[30]={0};
	int pid,fd,fd1,f;

	// 下面是我想用共享内存的方式，实现在父子进程之间通信，但是没有奏效，所以注释掉了
	// int shmid;
	// int* End_flag;
	// Create shared memory
	// if((shmid = shmget(IPC_PRIVATE, SHM_SIZE, IPC_CREAT|0666)) == -1){
	// 	printf("Fail to get shared memory\n");
	// 	return -1;
	// }
	// End_flag = shmat(shmid, 0, 0);
	// *End_flag = 0;

	strcpy(u1_name,"from->client1:");
	int len=strlen(u1_name);
	pid=fork();

	// 子进程向 public FIFO 写入数据
	if(pid==0)
	{
		fd1=open("pfifo",O_WRONLY);
		while(1)
		{
			strcpy(buf1,u1_name);
			printf("input:");
			fgets(buf1+len,sizeof(buf1)-len,stdin);
			write(fd1,buf1,sizeof(buf1));
			if(strncmp(buf1+len,"quit",4)==0){
				printf("Client_1 exit!\n");
				// *End_flag = 1;
				break;
			}
			memset(buf1,0,sizeof(buf1));
		}
		close(fd1);
	}

	// 父进程读取 private FIFO 的数据
	if(pid>0)
	{
		while(1){
			// if(*End_flag == 1){
			// 	break;
			// }
			fd=open("fifoa1",O_RDONLY);
			// printf("Read ...\n");
			if(read(fd,buf,sizeof(buf)) > 0){
				printf("recevering fuwuqi: %s",buf);
				close(fd);
			}
			usleep(100000);		// 延时0.1秒，防止循环过快
		}
	}
	return 0;
}
